#include<bits/stdc++.h>
using namespace std;
// #define int long long
long long dp[50][2][2];
long long getans(long long n,long long m){
	memset(dp,0,sizeof(dp));
	dp[33][1][1]=1;
	for(int i=32;i>=0;i--){
		int bi1=((n>>i)&1ll),bi2=((m>>i)&1ll);
		for(int l1=0;l1<=1;l1++){
			for(int l2=0;l2<=1;l2++){
				for(int nx1=0;nx1<=1;nx1++){
					for(int nx2=0;nx2<=1;nx2++){
						int nlim1=l1,nlim2=l2;
						if(nx1==0&&nx2==1)continue;
						if(nlim1==1&&bi1<nx1)continue;
						if(nlim2==1&&bi2<nx2)continue;
						if(bi1>nx1)nlim1=0;
						if(bi2>nx2)nlim2=0;
						dp[i][nlim1][nlim2]+=dp[i+1][l1][l2];
					}
				}
			}
		}
	}
	long long ans=0;
	ans+=dp[0][0][0];
	ans+=dp[0][1][0];
	ans+=dp[0][1][1];
	ans+=dp[0][0][1];
	return ans;
}
void solve(){
	long long l,r;
	cin>>l>>r;
	long long ans=0;
	ans+=getans(r,r);
	ans+=getans(l-1,l-1);
	ans-=getans(r,l-1);
	ans-=getans(l-1,r);
	cout<<ans<<'\n';
	//[r,r]+[l-1,l-1]-[r,l-1]-[l-1,r]
}
signed main(){
	freopen("comb.in","r",stdin);
	freopen("comb.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int T;
	cin>>T;
	while(T--)solve();
	return 0;
}